import requests
from requests import Session
# 函数 ：
"""
def 函数名称(参数列表):
    函数体
    return
"""


# 函数的定义
def show_msg(msg):
    print(msg)
    return msg + 'java'


# 函数的调用
a = show_msg("hello python")
print(a)

# 函数 ： 加法
def add(x,y):
    return x + y

def calc(a,b):
    add = a + b
    sub = a - b
    return add,sub


print(add(3,4))
# print(add(3))
# print(add(3,4,5))


# 默认参数 ：函数调用时，可以将默认参数不传递 。
# 规则 ： 当定义默认参数时，它必须是放在默认参数后
def study_language(name,language='python'):
    info = "{}要学习{}编程语言".format(name,language)
    return info


# 第一种情况 ：传递2个参数 ，将name和laguage都传递
print(study_language('韩非子','java'))

# 第二种情况 ：传递1个参数 ，只传递name
print(study_language('韩信'))


# 关键字参数 ：调用时以key = value的形式传递 ，
def study_language1(name,language):
    info = "{}要学习{}编程语言".format(name,language)
    return info

# 调用
print(study_language1(name='张三',language='python'))
print(study_language1(language='python',name='张三'))


# 3. 可变化参数

# 1）：列表形式的可变化参数 ： 参数名称前加*
"""
def 函数名(a,b,*args):
    代码块
    
说明 ：
    1 .调用处跟位置参数是一样的
    2. 接受的可变化参数，它是以元组形式显示 。
"""
# 需求 ： 可以针对不同个数进行相加
def add(a,b,*args):
    print(args)
    return sum(args) + a + b
lst = [5,6,7,8,9]
print(add(3,4,5))
print(add(3,4))
print(add(3,4,5,6,7,8,9))
print(add(3,4,*lst))


# 2) : 字典形式的可变化参数 ： 参数名称前加**
"""
def 函数名(a,b,**kwags):
    代码块
    
说明 ：
    1 .调用处跟关键字参数是一样的
    2. 接受的可变化参数，它是以字典形式显示 。
"""
print("="*30)
def show_info(**kwargs):
    print(kwargs)

# 调用
show_info()
show_info(lg1='java')
show_info(lg1='java',lg2='go',lg3='python')
show_info(**{'a':1,'b':2,'c':3})


# 列表形式的可变化参数 和 字典形式的可变化参数结合使用
def fun_name(*args,**kwargs):
    pass

"""
# 需求 ： 实现一个登录功能
1. 定义两条数据 ，要求用户数据的字段包括角色，账户名称，密码，部门
2， 要求返回的格式是字典形式 ，包含两个字段 ：code和message ,code等于0代表成功，为非0值代表失败 ，message给出提示 
    格式 ： {'code':1 ,'message':"用户名或密码错误"}
3. 输入的用户名和密码要求是从控制台输入 ，判断输入的用户名和密码是否和定义数据中的匹配，若匹配的话，返回登录成功的消息体 ，若失败，返回的是错误的消息体
4. 用户名输入错误，为空 ；密码为空，错误 都给出相应提示 ，如用户名不能为空 
5. 若用户名或密码不匹配，都给出登录失败 ，请检查您的用户名或密码是否填写正确
"""

user_list = [{'account':'admin','password':'123456'},{'account':'test','password':'123456'}]

# 定义登录函数
def login(username,password):
    pass
    # 判断用户名和密码是否是定义数据中的数据
